package com.zjmzxfzhl.modules.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zjmzxfzhl.common.core.base.BaseService;
import com.zjmzxfzhl.modules.app.entity.AppDoc;
import com.zjmzxfzhl.modules.app.entity.AppProj;
import com.zjmzxfzhl.modules.app.entity.AppDoc;
import com.zjmzxfzhl.modules.app.entity.AppTask;
import com.zjmzxfzhl.modules.app.form.AppDocVo;
import com.zjmzxfzhl.modules.app.form.AppProdVo;
import com.zjmzxfzhl.modules.app.form.DocTotalVo;
import com.zjmzxfzhl.modules.app.form.TaskTotalVo;
import com.zjmzxfzhl.modules.flowable.vo.ProcessInstanceRequest;

import java.util.List;

/**
 * Service
 * 
 * @author 张森荣
 */
public interface AppDocService extends BaseService<AppDoc> {
    /**
     * 分页查询
     *
     * @param page
     * @param appDocVo
     * @return
     */
    IPage<AppDocVo> list(IPage<AppDocVo> page, AppDocVo appDocVo);

    /**
     * 分页查询
     *
     * @param page
     * @param appDocVo
     * @return
     */
    List<AppDocVo> getList(IPage<AppDocVo> page, AppDocVo appDocVo);
    /**
     * 计算数量
     *
     * @param appDoc
     * @return
     */
    Integer selectRowCount(AppDocVo appDoc);

    /**
     * 软删除
     *
     * @return
     */
    boolean softDelete(String ids);
    /**
     * 恢复
     *
     * @return
     */
    boolean recovery(String ids,String dirId);

    /**
     * 根据id查询
     *
     * @return
     */
    AppDocVo queryById(String id);

    /**
     * 新增项目，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appDoc
     * @return
     */
    boolean saveAppDoc(AppDoc appDoc);

    /**
     * 修改任务，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appDoc
     * @return
     */
    boolean updateAppDoc(AppDoc appDoc);

    /**
     * 变更文档状态（已上传）
     *
     * @return
     */
    boolean uploaded(String docId);

    /**
     * 变更文档状态（待审批）
     *
     * @return
     */
    boolean pendingTrial(String docId);

    /**
     * 变更文档状态（审批中）
     *
     * @return
     */
    boolean inReview(String docId);

    /**
     * 变更文档状态（审批过）
     *
     * @return
     */
    boolean reviewed(String docId);

    /**
     * 变更文档状态（已驳回）
     *
     * @return
     */
    boolean reject(String docId);

    /**
     * 变更文档状态（已过期）
     *
     * @return
     */
    boolean timeout(String docId);

    /**
     * 变更文档状态（已作废）
     *
     * @return
     */
    boolean cancel(String docId);

    /**
     * 启动文档审批流程实例
     *
     * @return
     */
    boolean processStart(String docId);

    /**
     * 查询审核文档
     *
     * @param processInstanceId
     * @return
     */
    List<AppDocVo> procDoc(String processInstanceId);

    /**
     * 统计文档数量
     *
     * @return
     */
    List<DocTotalVo> docTotal(AppDoc appDoc);

    /**
     * 查询审核文档
     *
     * @param taskId
     * @return
     */
    List<AppDocVo> subTaskDoc(String taskId);
}
